home *** CD-ROM | disk | FTP | other *** search
- 1 REM VARIATN.BAS is in MSX BASIC with MUSIC MACRO
- 2 REM commands for the Yamaha CX5-M music computer
- 4 REM
- 5 REM*************************************************************
- 6 REM Copyright 1986 Curtis Bahn, Creative Associates Inc.
- 7 REM*************************************************************
- 8 REM
- 10 CLS
- 20 DIM P(6):DIM AP(6):DIM BP(36):DIM CP(216)
- 30 DIM D(6):DIM AD(6):DIM BD(36):DIM CD(216)
- 40 DT=0:CC=0:BC=0:AC=0:GP=0:R=0:HP=100
- 50 _INIT:_INST(1):_INST(2):_INST(3)
- 100 INPUT"HOW MANY NOTES IN SET?"; PN:IF PN>6 OR PN<1 THEN GOTO 100
- 110 PRINT"INPUT";PN;"PITCH RELATIONSHIPS"
- 120 FOR LOOP=1 TO PN
- 130 INPUT P(LOOP):IF ABS(P(LOOP))>12 THEN PRINT"TOO BIG":GOTO 130
- 135 IF GP<P(LOOP)THEN GP=P(LOOP):IF BP>P(LOOP)THEN BP=P(LOOP)
- 140 NEXT LOOP
- 150 PRINT "INPUT";PN;"TIME RELATIONSHIPS"
- 160 FOR LOOP=1 TO PN
- 170 INPUT D(LOOP)
- 180 NEXT
- 185 INPUT"BROWNIAN RANDOMIZER APPLIED TO PITCH (1 OR 0)";R:IF R>2 GOTO 185
- 190 PP=ABS(BP)+ABS(GP)
- 195 LP=HP-(3*GP):SK=100/(3*PP)
- 200 REM FRACTAL ROUTINE
- 205 PRINT"COMPUTING FRACTAL"
- 210 FOR A=1 TO PN
- 220 AP(A)=P(A)+RC:AD(A)=D(A)
- 230 FOR B=1 TO PN
- 240 BC=BC+1:IF R =1 THEN GOSUB 700
- 245 BP(BC)=AP(A)+P(B)+RC:BD(BC)=D(B)*D(A)
- 250 FOR C=1 TO PN
- 260 CC=CC+1:IF R=1 THEN GOSUB 700
- 270 CP(CC)=BP(BC)+P(C)+RC:CD(CC)=D(C)*BD(BC):DT=DT+CD(CC)
- 280 NEXT C: NEXT B: NEXT A
- 290 TS=255/DT
- 300 REM PLAYING ROUTINE
- 310 BC=0:CC=0
- 320 FOR A=1 TO PN
- 330 _SOUND(1,1,AP(A)+LP):CIRCLE(TC,90-(AP(A)*SK)),6
- 340 FOR B= 1 TO PN
- 345 BC=BC+1
- 350 _SOUND(2,1,BP(BC)+LP):CIRCLE(TC,90-(BP(BC)*SK)),3
- 360 FOR C= 1 TO PN
- 370 _SOUND(3,1,CP(CC)+LP):CIRCLE(TC,90-(CP(CC)*SK)),1
- 380 FOR LOOP=1 TO CD(CC):TC=TC+TS
- 385 REM all play statements here for mono playback
- 390 _SOUND(3,0,CP(CC)+LP)
- 400 NEXT LOOP
- 410 NEXT C: NEXT B: NEXT A
- 420 _STOP(1): _STOP(2): _STOP(3)
- 430 INKEY$=DD$:IF DD$="" THEN GOTO 430
- 440 GOTO 300
- 500 REM BROWNIAN ROUTINE
- 510 S=0
- 520 FOR I= 1 TO 12
- 530 S=S+RND(1)
- 540 NEXT I
- 550 RC=INT(2*(S-6))
- 560 RETURN
- GOTO 300
- 500 REM BROWNIAN ROUTINE
- 510 S=0
- 520 FOR